package com.swing.jiaocheng;

import javax.swing.*;
import java.awt.*;

/**
 * 第2章 Java Swing JFrame和JPanel：窗口容器和面板容器
 */
public class JFrameAndJPanel02 {

    /**
     * 在Swing中，任何其他组件都必须位于一个顶层容器中，JFrame窗口和JPanel面板是常用的顶层容器。
     */

    /**
     * JFrame窗口
     * JFrame用来设计类似于Windows系统中窗口形式的界面，JFrame是Swing组件的顶层容器，该类继承了AWT的Frame类，支持Swing体现的
     * 高级GUI属性
     *
     * JFrame类的常用构造方法如下所示:
     * JFrame():构造一个初始时不可见的新窗体
     * JFrame(String title): 创建一个具有title指定标题的不可见新窗体。
     */

    /**
     * 当创建一个JFrame类的实例对象后，其他组件并不能够直接放到容器上面，需要将组件添加至内容窗格，而不是直接添加至JFrame对象。
     */

    //JFrame类中的常用方法如下

    public static void mains(String[] args) {

        //创建JFrame对象
        JFrame jFrame = new JFrame("Java第一个GUI程序");
        //也可以使用如下方法设置title
        jFrame.setTitle("Hello Swing");

        //设置JFrame的尺寸
        jFrame.setSize(400,200);

        //设置窗口是否可关闭
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //创建一个标签
        JLabel jLabel = new JLabel("这是使用JFrame类创建的窗口");

        //获取当前窗口的内容窗格,并将标签添加到内容窗口里面
        Component component = jFrame.getContentPane().add(jLabel);

        //设置窗口是可见的
        jFrame.setVisible(true);

    }

    /**
     * JPanel面板
     * JPanel是一种中间层容器，它能容纳组件并将组件结合在一起，但它本身必须添加到其他容器中使用。
     * JPanel类的构造方法如下。
     * JPanel():使用默认的布局管理器创建新面板，默认的布局管理器为FlowLayout。
     * JPanel(LayoutManagerLayout layout):创建指定布局管理器的JPanel对象。
     */

    public static void main(String[] args) {
        JFrame jFrame = new JFrame("java第二个GUI程序");
        //设置窗口大小和位置
        jFrame.setBounds(300,100,400,200);

        JPanel jPanel = new JPanel(); //创建一个JPanel对象
        JLabel jLabel = new JLabel("这是放在JPanel上的标签");  //创建一个标签
        jPanel.setBackground(Color.red);  //设置背景色
        jPanel.add(jLabel);  //将标签添加到面板
        jFrame.add(jPanel);    //将面板添加到窗口
        jFrame.setVisible(true);  //设置窗口可见

    }


}
